package io.terminus.spzx.manager.mapper;

import io.terminus.spzx.model.entity.system.SysMenu;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author lichunlong lcl253137@alibaba-inc.com
 * @desc 系统菜单Mybatis Mapper
 * @date 2024-07-29
 */
@Mapper
public interface SysMenuMapper {

    /**
     * 查询所有菜单
     *
     * @return 菜单列表
     */
    List<SysMenu> findAll();

    /**
     * 添加菜单
     *
     * @param sysMenu 系统菜单
     */
    void save(SysMenu sysMenu);

    /**
     * 修改菜单
     *
     * @param sysMenu 系统菜单
     */
    void update(SysMenu sysMenu);

    /**
     * 根据ID查询是否包含子菜单
     *
     * @param id 菜单ID
     * @return 是否包含子菜单
     */
    int selectCountById(Long id);

    /**
     * 根据ID删除菜单
     *
     * @param id 菜单ID
     */
    void delete(Long id);

    /**
     * 根据用户ID查询分配的菜单列表
     *
     * @param userId 用户ID
     * @return 菜单列表
     */
    List<SysMenu> findMenuByUserId(Long userId);

    /**
     * 根据父菜单ID查询父菜单信息
     *
     * @param parentId 父菜单ID
     * @return 父菜单信息
     */
    SysMenu selectParentMenu(Long parentId);
}
